﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;

namespace DARE
{
    public interface IParticle
    {
        #region properties

        Vector3 Position { get; set; }
        Vector3 Velocities { get; set; }
        bool IsAlive { get; set; }
        float Age { get; }
        VertexBuffer VertexBuffer { get; }
        IndexBuffer IndexBuffer { get; }
        Matrix WorldMatrix { get; }
        Effect ParticleEffect { get; set; }

        #endregion

        #region methods

        /// <summary>
        /// Clones the particle entirely (returns a new particle)
        /// </summary>
        IParticle Clone();
        /// <summary>
        /// Clones only the parameters from the referenceParticle to the current particle
        /// </summary>
        IParticle CloneParameters(IParticle referenceParticle);
        /// <summary>
        /// Called whenever a particle is placed from the dead particles list to the active particle list
        /// </summary>
        void Start();
        void Update(float elapsedTime);
        void Draw();

        #endregion
    }
}
